﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace BDSim
{
   public class CarTrackSimulationDLL
    {
       ///////////////////////////////////////////////////////////////////////////////////////////
//函数名称：InitTrack
//函数功能： 轨迹仿真初始化
//输入:
//       (1)Conffilename  ：配置的轨迹命令文件
//      （2）Limitfilename ：配置的限值文件
//       (3)SimStep ： 仿真步长
//       (4)OutStep ： 轨迹数据输出步长
//       (5)CoorType ： 坐标系类别
//       (6) TranType ： 旋转顺序
//输出:
//       无 
//返回值 :无
//其他说明：无
//被本函数调用的函数清单： 无 
//调用本函数的函数清单：无
///////////////////////////////////////////////////////////////////////////////////////////
/**************************姿态矩阵旋转的顺序****************************/
/*设置坐标系以及旋转次序
	CoorType=	0:导航坐标系(东北天) 载体坐标系(右前上) 	CoorType=1:导航坐标系(北东地) 载体坐标系(前左下)
	 CoordinateType = 0时	Y(航向)、P(俯仰)、R(横滚)；
	  TranType=1：Y、P、R	......绕Z轴(旋转Yaw)——绕X轴(旋转Pitch)——绕Y轴(旋转Roll)
	  TranType2：Y、R、P	......绕Z轴(旋转Yaw)——绕Y轴(旋转Roll)——绕X轴(旋转Pitch)
	  TranType3：P、Y、R	......绕X轴(旋转Pitch)——绕Z轴(旋转Yaw)——绕Y轴(旋转Roll)
	  TranType4：P、R、Y	......绕X轴(旋转Pitch)——绕Y轴(旋转Roll)——绕Z轴(旋转Yaw)
	  TranType5：R、Y、P	......绕Y轴(旋转Roll)——绕Z轴(旋转Yaw)——绕X轴(旋转Pitch)
	  TranType6：R、P、Y	......绕Y轴(旋转Roll)——绕X轴(旋转Pitch)——绕Z轴(旋转Yaw)
	CoordinateType = 1时	Y(航向)、P(俯仰)、R(横滚)；
	  TranType1：Y、P、R	......绕Z轴(旋转Yaw)——绕Y轴(旋转Pitch)——绕X轴(旋转Roll)
	  TranType2：Y、R、P	......绕Z轴(旋转Yaw)——绕X轴(旋转Roll)——绕Y轴(旋转Pitch)
	  TranType3：P、Y、R	......绕Y轴(旋转Pitch)——绕Z轴(旋转Yaw)——绕X轴(旋转Roll)
	  TranType4：P、R、Y	......绕Y轴(旋转Pitch)——绕X轴(旋转Roll)——绕Z轴(旋转Yaw)
	  TranType5：R、Y、P	......绕X轴(旋转Roll)——绕Z轴(旋转Yaw)——绕Y轴(旋转Pitch)
	  TranType6：R、P、Y	......绕X轴(旋转Roll)——绕Y轴(旋转Pitch)——绕Z轴(旋转Yaw)	*/
/************************************************************************/
       [DllImport("CarTrackSimulationDLL.dll",EntryPoint="InitTrack",CallingConvention=CallingConvention.Cdecl)]
      public static extern bool InitTrack(char[] Conffilename, char[] Limitfilename,double SimStep, double OutStep, int CoorType,  int TranType);

 ///////////////////////////////////////////////////////////////////////////////////////////
//函数名称：GetOneData
//函数功能： 按照设定的输出步长获取轨迹数据点
//输出:
//       (1) m_data ：轨迹、姿态数据
//       (2) ExcpInfo ：与设定条件不符合的异常信息
//返回值 :无 
//其他说明：无
//被本函数调用的函数清单： 无 
//调用本函数的函数清单：无
/////////////////////////////////////////////////////////////////////////////////////////// 
/*******************************************************************\
 *功能
      获取一个步长的计算结果
 *参数
	  m_data：返回轨迹点信息
	  ExcpInfo：计算返回信息
 *返回值
	  0 计算失败、还没有计算完成等原因，没有正确获取坐标点信息
	  1 计算正确，正确获取坐标点信息
	  2 已经全部计算完轨迹命令，没有坐标点信息可供返回

\*******************************************************************/
       [DllImport("CarTrackSimulationDLL.dll",EntryPoint="GetOneData",CallingConvention=CallingConvention.Cdecl)]
       public static extern short GetOneData(out OutPoint m_data,out CarExceptionMsg ExcpInfo);
    }
}
